當需要把docker image放在網路供別人使用,或者系統部署的時候使用時,可以選擇把image推到AWS ECR,交給ECR託管。當然也可以選擇docker hub,但是如果要建private repository,需要訂閱docker hub提供的方案(個人方案$5/month),選擇AWS ECR可以根據資料傳輸計費,可以少花費一點$。
要在ECR託管docker image,首先需要在ECR新增repository。必須輸入namespace和name,以及選擇tag能不能被覆蓋,和加密方式。
新增完之後就可以看到Repository。
點進去之後,右上角的View push commands
有指令教學要如何把image推上ECR。
在執行這些指令之前,因為需要用到AWS cli跟AWS溝通,所以需要先在local設定AWS configuration。
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
設定好之後,就可以登入AWS ECR和local的docker client,並且指定要把image推到哪裡。如果有成功登入,會出現Login Succeeded。
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 262969866776.dkr.ecr.us-east-1.amazonaws.com
然後就可以build docker image,image的名稱必須要跟ECR Repository的namespace/name一致,這樣push image的時候,才知道要推到哪個Repository。
build好之後,就可以打tag標記版本。
docker tag test/apache-server:latest 262969866776.dkr.ecr.us-east-1.amazonaws.com/test/apache-server:latest
最後,就可以push image到ECR。
push到ECR之後,就可以到ECR的介面看到push的紀錄。
參考資料: